package com.tuniu.agents.agent;

import com.tuniu.agents.advisor.ChatEnvironmentMemory;
import com.tuniu.agents.memory.MemoryManager;
import com.tuniu.agents.message.MessageRender;
import com.tuniu.agents.prompt.PromptManager;
import lombok.Getter;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.api.Advisor;
import org.springframework.ai.chat.memory.ChatMemory;

import java.util.List;

/**
 * Agent Group Manager
 * Reduces the repetition of injected parameters
 */
@Getter
public class AgentManagerGroup {

    /**
     * Model Builder
     */
    private final ChatClient.Builder modelBuilder;
    /**
     * Chat Record Storage
     */
    private final ChatMemory chatMemory;
    /**
     * Prompt Manager
     */
    private final PromptManager promptManager;
    /**
     * Global Environment Variable Storage
     */
    private final ChatEnvironmentMemory chatEnvironmentMemory;
    /**
     * Advisors
     */
    private final List<Advisor> advisors;
    /**
     * Agent Manager
     */
    private final AgentManager agentManager;
    /**
     * Chat Context Information Operations
     */
    private final MemoryManager memoryManager;

    private final MessageRender messageRender;

    public AgentManagerGroup(ChatClient.Builder modelBuilder, ChatMemory chatMemory, PromptManager promptManager, ChatEnvironmentMemory chatEnvironmentMemory, List<Advisor> advisors, AgentManager agentManager, MemoryManager memoryManager, MessageRender messageRender) {
        this.modelBuilder = modelBuilder;
        this.chatMemory = chatMemory;
        this.promptManager = promptManager;
        this.chatEnvironmentMemory = chatEnvironmentMemory;
        this.advisors = advisors;
        this.agentManager = agentManager;
        this.memoryManager = memoryManager;
        this.messageRender = messageRender;
    }

}
